package com.company;
import java.io.*;
public class PrimitiveTypeTest {
    public static void main(String[] args) {
        // byte
        System.out.println("基本类型：byte 二进制位数：" + Byte.SIZE); //8
        System.out.println("包装类：java.lang.Byte");
        System.out.println("最小值：Byte.MIN_VALUE=" + Byte.MIN_VALUE);
        System.out.println("最大值：Byte.MAX_VALUE=" + Byte.MAX_VALUE);
        System.out.println();


        // short
        System.out.println("基本类型：short 二进制位数：" + Short.SIZE); // 16
        System.out.println("包装类：java.lang.Short");
        System.out.println("最小值：Short.MIN_VALUE=" + Short.MIN_VALUE);
        System.out.println("最大值：Short.MAX_VALUE=" + Short.MAX_VALUE);
        System.out.println();

        // int
        System.out.println("基本类型：int 二进制位数：" + Integer.SIZE); // 32
        System.out.println("包装类：java.lang.Integer");
        System.out.println("最小值：Integer.MIN_VALUE=" + Integer.MIN_VALUE);
        System.out.println("最大值：Integer.MAX_VALUE=" + Integer.MAX_VALUE);
        System.out.println();

        // long
        System.out.println("基本类型：long 二进制位数：" + Long.SIZE); // 64
        System.out.println("包装类：java.lang.Long");
        System.out.println("最小值：Long.MIN_VALUE=" + Long.MIN_VALUE);
        System.out.println("最大值：Long.MAX_VALUE=" + Long.MAX_VALUE);
        System.out.println();

        // float
        System.out.println("基本类型：float 二进制位数：" + Float.SIZE); // 32
        System.out.println("包装类：java.lang.Float");
        System.out.println("最小值：Float.MIN_VALUE=" + Float.MIN_VALUE);
        System.out.println("最大值：Float.MAX_VALUE=" + Float.MAX_VALUE);
        System.out.println();

        // double
        System.out.println("基本类型：double 二进制位数：" + Double.SIZE); // 64
        System.out.println("包装类：java.lang.Double");
        System.out.println("最小值：Double.MIN_VALUE=" + Double.MIN_VALUE);
        System.out.println("最大值：Double.MAX_VALUE=" + Double.MAX_VALUE);
        System.out.println();

        // char
        System.out.println("基本类型：char 二进制位数：" + Character.SIZE);
        System.out.println("包装类：java.lang.Character");
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
        System.out.println("最小值：Character.MIN_VALUE="
                + (int) Character.MIN_VALUE);
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
        System.out.println("最大值：Character.MAX_VALUE="
                + (int) Character.MAX_VALUE);


        int test1 = 'a' + 'b';
        int a = 'a';
        int b = 'b';
        int A = 'A';

        System.out.println("a：" + a);
        System.out.println("b：" + b);
        System.out.println("A：" + A);
        System.out.println("test1结果是：" + test1);
        char test2 = 'a' + 'b';
        System.out.println("test2结果是：" + test2);


        // 常量
        final double PI = 3.1415927;

        byte aa = 68;
        char aaa = 'A';

        int i = 100;
        int o = 0144;
        int h = 0x64;

        System.out.println("aa: " + aa);
        System.out.println("aaa: " + aaa);
        System.out.println("i: " + i);
        System.out.println("o: " + o);
        System.out.println("h: " + h);


        // 字符串常量和字符常量都可以包含任何Unicode字符。例如：
        char s = '\u0001';
        String ss = "\u0001";

        System.out.println("s: " + s);
        System.out.println("ss: " + ss);

        // 自动类型转换
        // 低到高
        // byte, short, char -> int -> float -> double
        int ii = 128;
        byte bb = (byte)i;
        System.out.println("ii: " + ii);
        System.out.println("bb: " + bb);
        //因为 byte 类型是 8 位，最大值为127，所以当 int 强制转换为 byte 类型时，值 128 时候就会导致溢出。
        boolean bbbb = (int)23.7 == 23;
        System.out.println("(int)23.7 == 23" + bbbb);

        boolean cb = (int)-45.89f == -45;
        System.out.println("cb：" + cb);


    }
}
